﻿using System;
using ClickLand.CorporacionPlaza.Presentacion.Contratos.AdministracionEstablecimiento;
using ClickLand.CorporacionPlaza.Presentacion.Controladores;
using ClickLand.CorporacionPlaza.Presentacion.CorporacionPlazaWS;

namespace ClickLand.CorporacionPlaza.Presentacion.Presentadores.AdministracionEstablecimiento
{
    public class PresentadorAgregarEstablecimiento: PresentadorBase
    {
        #region Atributos

        /// <summary> Objeto que posee la informacion de la vista </summary>
        private readonly IAgregarEstablecimiento _vista;


        /// <summary> Objeto que posee la declaracion del controlador del modulo </summary>
        private ControladorAdministracionEstablecimiento _controlador;

        #endregion

        #region Constructor

        /// <summary> Constructor de la clase </summary>
        /// <param name="vista">datos de la vista</param>
        public PresentadorAgregarEstablecimiento(IAgregarEstablecimiento vista)
        {
            _vista = vista;
            _controlador = new ControladorAdministracionEstablecimiento();
        }

        #endregion

        #region metodos

        /// <summary> Metodo que se ejecuta al cargar la pagina </summary>
        public void CargarPagina()
        {
            CargarListaConValor(_vista.DdlTipoEstablecimiento, "tipoEstablecimiento", false);
        }

        /// <summary> Metodo que se ejecuta, al llenar el formulario, para mostrar la informacion en un form de confirmacion</summary>
        public void MostrarConfirmacion()
        {
            _vista.LblTipoEstablecimientoConfirmacion.Text = _vista.DdlTipoEstablecimiento.SelectedItem.Text;
            _vista.LbNumeroLocalConfirmacion.Text = _vista.TbNumeroLocal.Text;
            _vista.LbPrecioConfirmacion.Text = _vista.TbPrecio.Text;
            _vista.LbDireccionConfirmacion.Text = _vista.TbDireccion.Text;
            _vista.Paneles.SetActiveView(_vista.VConfirmacion);
        }

        /// <summary> Metodo que acepta la insercion del establecimiento </summary>
        /// Muestra un mensaje de exito si agrego correctamente
        /// Muestra un mensaje de fallo en el caso que no agregue a base de datos.
        public void AceptarConfirmacion()
        {
            var establecimiento = new EstablecimientoDto();
            establecimiento.Tipo = new TipoEstablecimientoDto();
            establecimiento.Tipo.Id = Convert.ToInt64(_vista.DdlTipoEstablecimiento.SelectedItem.Value);
            establecimiento.Precio = Convert.ToSingle(_vista.LbPrecioConfirmacion.Text);
            establecimiento.Numero = _vista.TbNumeroLocal.Text;
            establecimiento.Lugar = _vista.TbDireccion.Text;
            establecimiento.Estado = 1;

            _vista.Paneles.SetActiveView(_controlador.AgregarModificarEstablecimiento(establecimiento)
                                             ? _vista.VMensajeExito
                                             : _vista.VMensajeError);
        }
        #endregion

       
    }
}
